<script type='text/javascript' language='javascript'>
//VARS
var url_base = "{url_base}";
var quant_list = '{quant_list}'; // valor vindo do parser do controller

$(document).ready(function(){
    /**
     * Verifica se existe mensagem de erro de validação
     */
    if(($("#messege-alert").hasClass("erro") && window.location.toString() == url_base + 'grupo/atualizar') || ($("#messege-alert").hasClass("aviso") && window.location.toString() == url_base + 'grupo/atualizar')){
        show_form('edit');
    }else if(($("#messege-alert").hasClass("erro") && window.location.toString() == url_base + 'grupo/cadastrar') || ($("#messege-alert").hasClass("aviso") && window.location.toString() == url_base + 'grupo/cadastrar')){
        show_form('insert');
    }

   /**
    * Filtrar dados do dataGrid pelo código
    */
   $(".codigo").click(function() {
        if(window.location.toString() == url_base + 'grupo/listar/cod/1/' + quant_list){
            window.location = url_base + 'grupo/listar/cod/2/' + quant_list;
        }else {
            window.location = url_base + 'grupo/listar/cod/1/' + quant_list;
        }
       return false;
   });
   
   /**
    * Filtrar dados do dataGrid pelo nome
    */
   $(".nome").click(function() {
       if(window.location.toString() == url_base + 'grupo/listar/nome/1/' + quant_list){
           window.location = url_base + 'grupo/listar/nome/2/' + quant_list;
       }else {
           window.location = url_base + 'grupo/listar/nome/1/' + quant_list;
       }
       return false;
   });
   
   /**
    * Filtrar dados do dataGrid pelo status
    */
   $(".status").click(function() {
       if(window.location.toString() == url_base + 'grupo/listar/status/1/' + quant_list){
           window.location = url_base + 'grupo/listar/status/2/' + quant_list;
       }else {
           window.location = url_base + 'grupo/listar/status/1/' + quant_list;
       }
       return false;
   });
   
   
    /** Filtra dados QUANTIDADE **/
    $(".filter_quant").change(function() {
        window.location = url_base + 'grupo/listar/cod/2/' + $(this).val();
        return false;
    });
    
    
   /**
    * fecha formulario
    */
   $('#bt_cancel').click(function(){
       $("#form-insert").fadeOut();
       scroll_to('#page-content');
   });

    /** Seleção das acoes **/
    $( "#selectable_acoes" ).selectable({
        stop: function() {
            var ids = new Array();
            $('#acoes_id').val("");
            $( ".ui-selected", this ).each(function() {
                ids.push($(this).val());
                $('#acoes_id').val(ids.toString()); // joga os ids para o input
            });
        },
        //Seleciona os itens já escolhidos
        create: function(event, ui) {
            var ids = $('#acoes_id').val().split(',');
            $('#selectable_acoes .acoes_select').each(function(index){
                for(var i = 0; i <= ids.length; i++){
                    if( $( this ).val() == ids[i] && $( this ).val() != 0){
                        $( this ).addClass('ui-selected');
                    }
                }
            });
        }
    });
});

/**
 * Retorna do controller o grupo selecionado para edição
 */
function get_group(codigo){
    $("#loading-data").fadeIn();

    $.ajax({
        url: '{url_base}grupo/get_group_json',
        type:'POST',
        dataType: 'json',
        data: { idGrupo: codigo },
        success: function(data){
            /** 
             * Verifica se o grupo selecionado possui ação SUPER ADMINISTRADOR e se o usuário logado é SUPER ADMINISTRADOR 
             * Se o grupo selecionado for SUPER e o usuário logado não for, a ação solicitada é bloqueada, 
             **/
            if(data.grupo.super_admin == 1 && data.super_admin == 0) {
                open_dialog_permission();
                $("#loading-data").fadeOut();
                $("#form-insert").fadeOut();
                scroll_to('#page-content');
            }else{
                $("#loading-data").fadeOut();
                $('#messege-alert').fadeOut();
                clear_form();

                $("#codigo").val(data.grupo.id);
                $("#nome").val(data.grupo.nome);
                $("#descricao").val(data.grupo.descricao);
                //Ações do grupo
                var ids_acao = new Array();
                $(data.grupo.acoes).each(function(index, acao){
                    ids_acao.push(acao.id);
                });
                $('#acoes_id').val(ids_acao.toString());
                $('#selectable_acoes .acoes_select').each(function(index){
                    for(var i = 0; i <= ids_acao.length; i++){
                        if( $( this ).val() == ids_acao[i]){
                            $( this ).addClass('ui-selected');
                        }
                    }
                });

                //Select status
                (data.grupo.status == 0) ? $("#status")[0].selectedIndex = 1 : $("#status")[0].selectedIndex = 0;
                show_form("edit");
            }
        },
        error: function (data){ //Erro do back-end
            $("#loading-data").fadeOut();
            $("#form-insert").hide('slow');
            $("#show-alert").html(erro_message());
            scroll_to("#page-content");
        }
    }); 
}

/**
 * Função par abrir o form Insert ou Update de acordo com o parametro
 * 
 * @param string Nome da ação
 * Podendo ser new, erro ou sucess
 */
function show_form(action) {
    if(action == "edit"){ // UPDATE data
        $("#bt_submit").val("Atualizar grupo");
        $("#form-insert-grupo").attr("action", "{url_base}grupo/atualizar");
        $("#form-insert legend").html("<h3>Atualizar dados do grupo</h3>");
    }else if(action == "insert"){
        $("#form-insert-grupo").attr("action", "{url_base}grupo/cadastrar");
        $("#form-insert legend").html("<h3>Cadastrar um novo grupo</h3>");
    }else{
        $("#bt_submit").val("Cadastrar grupo");
        $("#form-insert-grupo").attr("action", "{url_base}grupo/cadastrar"); 
        $("#form-insert legend").html("<h3>Cadastrar um novo grupo</h3>");
        clear_form();
    }
    $("#form-insert").show('slow');
    $(".input1").focus();

    // Analisa se deve colocar a visão no content grid ou deixar no show-alert
    if($("#messege-alert").hasClass("erro") || $("#messege-alert").hasClass("aviso")) {
        // o foco fica na mensagem
    } else {
        scroll_to("#content-datagrid");
    }
}

/**
 * Limpa o form e list de itens selecionadoa 
 */
function clear_form() {
    $("#nome, #descricao, #acoes_id").val("");
    $('#status').prop('selectedIndex', 0);
    $('#selectable_acoes .acoes_select').each(function(){
         $( this ).removeClass('ui-selected');
    });
}

/*
 * Carrega os dados do autor selecionada para remoção
 */    
function delete_group(codigo) {
    $("#loading-data").fadeIn();

    if(get_code().length > 1){
        $("#codigoDelete").val(get_code());
        $("#nomeDelete").val("");
        $("#loading-data").fadeOut();
        $("#inforDel").html('<p>Deseja realmente excluir os Grupos selecionados?<br /><span style="color: #cc0000; font-size: 15px; font-weight: bold;">'  + get_code().length + ' no total.</span> <br />Uma vez excluído não será possível recuperar os dados.');
        open_dialog_delete();
    }else{
        $.ajax({
            url: '{url_base}grupo/get_group_json',
            type:'POST',
            dataType: 'json',
            data: { idGrupo: codigo },
            success: function(data){
                $("#loading-data").fadeOut();
                $('#messege-alert').fadeOut();
                $("#form-insert").hide('slow');

                $("#codigoDelete").val(data.grupo.id);
                $("#nomeDelete").val(data.grupo.nome);
                $("#inforDel").html('<p>Deseja realmente excluir o Grupo:<br /><span style="color: #cc0000; font-size: 15px; font-weight: bold;">'  + data.grupo.nome + '?' + '</span> <br />Uma vez excluído não será possível recuperar os dados.');

                open_dialog_delete();
            },
            error: function (data){ //Erro do back-end
                $("#loading-data").fadeOut();
                $("#form-insert").hide('slow');
                $("#show-alert").html(erro_message());
                scroll_to("#page-content");
            }
        });
    }
}

/*
 * DIALOG para confirmar remoção da Autor
 */
function open_dialog_delete() {
    $(".dialog-excluir").dialog({
        height: 195,
        width: 420,
        resizable: false,
        draggable: true,
        modal: true,
        buttons: {
            'Sim': function() {
                $(this).dialog('close');
                $("#form-delete-grupo")[0].submit();
            },
            'Não': function() {
                $(this).dialog('close');
            }
        }
    });
}

function open_dialog_permission() {
    $("#dialog_no_permission").dialog({
        height: 195,
        width: 420,
        resizable: false,
        draggable: true,
        modal: true,
        buttons: {
            'OK': function() {
                $(this).dialog('close');
            }
        }
    });
}
</script>
<article>
    <div id="box-search">
        <form id="search" name="search" action="{url_base}grupo/buscar/cod/2/{quant_list}">
            <input type="search" name="search_term" class="input_search" placeholder="Buscar grupo pelo código, nome, ou ações"/>
            <a class="search_refresh" href="{url_base}grupo">
                <img title="Atualiza página descartando a busca" align="center" src="<?php echo site_url('assets/img/refresh.png'); ?>"/>
            </a>
        </form>
    </div> 
    <div id="filter_item">
        <i>Quantidade por página:</i>
        <form id="quant_list">
            <?php 
                echo form_dropdown('filter_quant', array(10 => '10', 20 => '20', 30 => '30', 50 => '50'), isset($quant_list) ? $quant_list : '', 'class="filter_quant"'); 
            ?>
        </form>
    </div>
    <div id="datagrid">
        <table>
            <thead>
                <tr>
                    <th><input type="checkbox" value="1" id="select-all" name="select-all" title="Selecionar registros"></th>
                    <th><a href="" class="codigo">Código</a></th>
                    <th><a href="" class="nome">Nome</a></th>
                    <th>Descrição</th>
                    <th>Ações pertencentes ao grupo</th>
                    <th><a href="" class="status">Status</a></th>
                    <th colspan="2">Ação</th>
                </tr>
            </thead>
            <?php if(isset($grupos)): ?>
            <tfoot>
                <tr>
                    <td colspan="9">
                        <div id="paginacao">
                            <ul class="pagination">
                                {pagination}
                            </ul>
                        </div>
                        <div id="total-register">
                            Total: {total_rows}
                        </div>
                    </td> 
                </tr>
            </tfoot>					
            <tbody>
                <?php if(isset($grupos)): foreach ($grupos as $index => $grupo): ?>
                <?php
                    //Preparando as ações pertencentes ao grupo da vez para a exibição
                    $acoes_grupo = array();

                    foreach ($grupo->acoes as $acao) {
                        array_push($acoes_grupo, $acao->nome);
                    }
                ?>
                <tr class="<?php echo strtolower($grupo->get_nome_status()); ?> pointer" ondblclick="get_group('<?php echo $grupo->id; ?>')">
                    <td width="10">
                        <input type="checkbox" name="cod[]" value="<?php echo $grupo->id; ?>" class="codigoId">
                    </td>
                    <td width="60"><?php echo $grupo->id; ?></td>
                    <td><?php echo $grupo->nome; ?></td>
                    <td title="<?php echo $grupo->descricao; ?>"><?php echo character_limiter($grupo->descricao, 40); ?></td>
                    <td title="<?php echo implode(', ', $acoes_grupo); ?>"><?php echo character_limiter(implode(', ', $acoes_grupo), 50); ?></td>
                    <td><?php echo $grupo->get_nome_status(); ?></td>
                    <td width="20">
                        <a title="Editar registro"  onclick="get_group('<?php echo $grupo->id; ?>')">
                            <img align="center" src="{url_base}/assets/img/edit.png"/>
                        </a>
                    </td>
                    <td width="20"> 
                        <a title='Excluir registro' onclick="delete_group('<?php echo $grupo->id; ?>')">
                            <img align="center" src="{url_base}/assets/img/delete.png"/>
                        </a>
                    </td>
                </tr>
                <?php endforeach; endif; ?> <!-- END loop grupos -->
                <?php endif; ?>
            </tbody>
        </table>
    </div> <!-- END of #datagrid -->
</article>
<button type="button" class="button" id="new-data" onclick="show_form();">Cadastrar um novo grupo</button>
<div id="main-content-datagrid" class="form-author">
    <div id="loading-data">
        <img src="{url_base}assets/img/loading.gif" width="220" height="20"/>
    </div>
    <div id="content-datagrid">
        <section id="form-insert">
            <form action="{url_base}grupo/cadastrar" id="form-insert-grupo" name="form_insert" method="post" accept-charset="utf-8" enctype="multipart/form-data">
                <fieldset>
                    <legend><h3>Cadastrar um novo grupo</h3></legend>
                    <div id="content_form">
                        <input  type="hidden" name="codigo" id="codigo" value="<?php echo set_value('codigo'); ?>"/>
                        <label>
                            <p>Name*:</p>
                            <input class="input1" type="text" name="nome" id="nome" value="<?php echo set_value('nome'); ?>" autofocus required/>
                        </label>
                        <label>
                            <p>Descrição*:</p>
                            <textarea name="descricao" id="descricao" rows="5" placeholder="Informe uma breve descrição do grupo..." required><?php echo set_value('descricao'); ?></textarea>
                        </label>

                        <label>
                            <?php if (stristr('A vida é bela', 'vida') === TRUE){ echo 'PUTZZZZZZZZ aqui';} ?>
                            <p>Ações*: <i>Atribua as ações que os usuários pertencentes ao grupo poderão executar.</i></p>
                            <p><i>- Segure a tecla <b>Ctrl</b> para selecionar mais de uma ação.</i><br /><i><b>- Cursor do mouse em cima da ação mostra sua descrição.</b></i></p>
                            <input id="acoes_id" name="acoes_id" type="hidden" value="<?php echo set_value('acoes_id'); ?>" />
                            <div id="list_acoes">
                                <ol id="selectable_acoes">
                                    <h2>CONSULTAS <span> - Ações referente a consultas, visualização de dados...</span></h2> 
                                    <?php foreach ($acoes as $acao): if (stristr($acao->nome, 'consultar') !== FALSE): ?>   
                                        <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome; ?></li>
                                    <?php endif; endforeach; ?> <hr>
                                            
                                    <h2>CADASTROS <span> - Ações referente a cadastro, inserção de dados...</span></h2> 
                                    <?php foreach ($acoes as $acao): if(stristr($acao->nome, 'cadastrar') !== FALSE): ?>   
                                       <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome; ?></li>
                                    <?php endif; endforeach; ?> <hr>
                                       
                                    <h2>ATUALIZAÇÃO <span> - Ações referente a atualização de dados cadastrados...</span></h2> 
                                    <?php foreach ($acoes as $acao): if(stristr($acao->nome, 'atualizar') !== FALSE): ?>   
                                       <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome; ?></li>
                                    <?php endif; endforeach; ?> <hr>  
                                       
                                    <h2>EXCLUSÃO <span> - Ações referente a exclusão de dados cadastrados...</span></h2> 
                                    <?php foreach ($acoes as $acao): if(stristr($acao->nome, 'excluir') !== FALSE): ?>   
                                       <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome; ?></li>
                                    <?php endif; endforeach; ?> <hr>  
                                       
                                    <h2>CONFIGURAÇÃO <span> - Ações referente a configuração do sistema...</span></h2> 
                                    <?php foreach ($acoes as $acao): if(stristr($acao->nome, 'configuração') !== FALSE): ?>   
                                       <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome; ?></li>
                                    <?php endif; endforeach; ?> <hr>
                                    
                                    <?php if(Main::verificaAcaoSuper() == TRUE): ?>
                                    <h2>SUPER ADMINISTRADOR <span> - Terá acesso a todas as ações do sistema, sem restrições...</span></h2> 
                                    <?php foreach ($acoes as $acao): if (stristr($acao->nome, 'todas') !== FALSE): ?>   
                                       <li class="acoes_select pointer" value="<?php echo $acao->id; ?>" title="<?php echo $acao->descricao; ?>"><?php echo $acao->nome . ' ações'; ?></li>
                                    <?php endif; endforeach; ?>   
                                    <?php endif; ?>
                                </ol>
                            </div>
                        </label>
                        <label>
                            <p>Status*: <i>Aqui você tem duas opções:</i><br />
                                <i>
                                    <b>&nbsp;&nbsp;&nbsp;&nbsp;ATIVO >></b> Nesta opção os usuários pertencentes ao grupo ficam <b>HABILITADOS</b> para realizar as ações cabíveis a este grupo.<br />
                                    <b>&nbsp;&nbsp;&nbsp;&nbsp;INATIVO >></b> Nesta opção os usuários pertencentes ao grupo ficam <b>INABILITADOS</b> para realizar todas ações pertencentes a este grupo. Opção útil quando por algum motivo deseja <b>BLOQUEAR</b> todos usuários pertecentes ao grupo...
                                </i>
                            </p>
                            <?php echo form_dropdown("status", array(1 => "Ativo", 0 => "Inativo"), set_value('status'), "id='status'"); ?>
                        </label>
                        <input type="submit" value="Cadastrar grupo" id="bt_submit" class="button">&nbsp;
                        <a id="bt_cancel" class="button pointer">Cancelar</a>
                    </div>
                </fieldset>
            </form>
        </section>
            
        <section id="form-delete">
            <div class="dialogModal dialog-excluir">
                <h2>Atenção!</h2>
                <div id="inforDel"></div>    
            </div>
                <form action="{url_base}grupo/excluir" id="form-delete-grupo" method="post" accept-charset="utf-8">
                    <input type="hidden" id="codigoDelete" name="codigoDelete"/>
                    <input type="hidden" id="nomeDelete" name="nomeDelete"/>
                </form>
        </section>
        
        <section>
            <div id="dialog_no_permission" class="hide">
                <h3>Você não possui permissão para editar registros pertencente ao grupo SUPER ADMINISTRADOR...</h3><br />
                <p>Apenas SUPER ADMINISTRADOR pode editar registros desse grupo.</p>
            </div>
        </section>
    </div> <!-- END of #content-datagrid -->
</div> <!-- END of #main-content-datagrid -->
    